package cn.fl.capital.service.impl;

import cmm.comm.facade.framework.api.ISysDictionaryApiService;
import cmm.mid.core.framework.page.KeyValueVO;
import cmm.mid.core.framework.page.Pager;
import cn.cmm.base.framework.exception.BaseException;
import cn.cmm.base.framework.utils.CollectionUtils;
import cn.cmm.base.framework.utils.StringUtils;
import cn.fl.capital.condition.CapAdvRvtDtlQueryCondition;
import cn.fl.capital.dto.CapAdvRvtDtlDTO;
import cn.fl.capital.service.ICapAdvRvtDtlApiService;
import cn.fl.capital.service.ICapAdvRvtDtlService;
import cn.fl.capital.transform.CapAdvRvtDtlVOTransform;
import cn.fl.capital.vo.CapAdvRvtDtlVO;
import cn.fl.framework.base.context.CurrentThreadContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @Description: 资金垫款明细 客户端服务层接口实现
 * 业务层方法名称前缀：
 * 新增：add*
 * 删除：remove*
 * 修改：modify*
 * 批量：batch*
 * 查询对象：select* get*
 * 查询集合：search*
 */
@Service
public class CapAdvRvtDtlServiceImpl implements ICapAdvRvtDtlService {

    /**
     * 日志
     */
    @SuppressWarnings("unused")
    private static final Logger logger = LoggerFactory.getLogger(CapAdvRvtDtlServiceImpl.class);

    /**
     * 资金垫款明细 暴露服务
     */
    @Autowired
    private ICapAdvRvtDtlApiService capAdvRvtDtlApiService;
    /**
     * 数据字典服务
     */
    @Autowired
    private ISysDictionaryApiService sysDictionaryApiService;

    @Override
    public CapAdvRvtDtlVO selectById(Long id) throws BaseException {
        if (StringUtils.isEmpty(id)) return null;
        CapAdvRvtDtlDTO dto = this.capAdvRvtDtlApiService.selectCapAdvRvtDtlById(id);
        return CapAdvRvtDtlVOTransform.toVO(dto);
    }

    @Override
    public Long add(CapAdvRvtDtlVO entity) throws BaseException {
        if (null == entity) return null;
        return this.capAdvRvtDtlApiService.addCapAdvRvtDtl(CapAdvRvtDtlVOTransform.toDTO(entity));
    }

    @Override
    public boolean removeByIds(List<Long> ids) throws BaseException {
        if (CollectionUtils.isEmpty(ids)) return false;
        return this.capAdvRvtDtlApiService.removeCapAdvRvtDtlByIds(ids, CurrentThreadContext.getCurrentUserId());
    }

    @Override
    public boolean modify(CapAdvRvtDtlVO entity) throws BaseException {
        if (null == entity) return false;
        return this.capAdvRvtDtlApiService.modifyCapAdvRvtDtl(CapAdvRvtDtlVOTransform.toDTO(entity));
    }

    @Override
    public Pager searchListPage(Pager page) throws BaseException {
        CapAdvRvtDtlQueryCondition condition = null;
        if (null == page) {
            page = new Pager();
            page.setCondition(new CapAdvRvtDtlQueryCondition());
        }
        condition = (CapAdvRvtDtlQueryCondition) page.getCondition();
        condition.setSysCd(CurrentThreadContext.getCurrentSysCd());//当前系统代码
        condition.setOrgCd(CurrentThreadContext.getCurrentOrgCd());//当前机构代码
        condition.setUsrId(CurrentThreadContext.getCurrentUserId());//当前用户ID
        page = this.capAdvRvtDtlApiService.searchCapAdvRvtDtlListPage(page);
        if (CollectionUtils.isNotEmpty(page.getResultList())) {
            List<CapAdvRvtDtlVO> voList = CapAdvRvtDtlVOTransform.toVOList((List<CapAdvRvtDtlDTO>) page.getResultList());
            //this.setDictData(voList);
            page.setResultList(voList);
        }
        return page;
    }

    @Override
    public List<CapAdvRvtDtlVO> searchList(CapAdvRvtDtlQueryCondition condition) throws BaseException {
        if (null == condition) condition = new CapAdvRvtDtlQueryCondition();
        condition.setSysCd(CurrentThreadContext.getCurrentSysCd());//当前系统代码
        condition.setOrgCd(CurrentThreadContext.getCurrentOrgCd());//当前机构代码
        condition.setUsrId(CurrentThreadContext.getCurrentUserId());//当前用户ID
        List<CapAdvRvtDtlVO> voList = CapAdvRvtDtlVOTransform.toVOList(this.capAdvRvtDtlApiService.searchCapAdvRvtDtlList(condition));
        this.setDictData(voList);
        return voList;
    }

    /**
     * 添加数据字典名称
     *
     * @param voList
     */
    public void setDictData(List<CapAdvRvtDtlVO> voList) {
        if (CollectionUtils.isEmpty(voList)) return;
        /*Map<String, String> _CdMap = this.sysDictionaryApiService.searchGroupToMap(sysCd, orgCd, CapAdvRvtDtlConstant.CODE_CD);
		for(CapAdvRvtDtlVO vo:voList){
			if (_CdMap != null && _CdMap.containsKey(vo.getCd())) {
            	vo.setCdNm(_CdMap.get(vo.getCd()));
        	}	
		}*/
    }

    /**
     * 查询数据字典
     *
     * @param groupCd 组代码
     * @return List<KeyValueVO>
     */
    public List<KeyValueVO> searchCdList(String groupCd) {
        return this.sysDictionaryApiService.getKvList(groupCd, CurrentThreadContext.getCurrentSysCd(), CurrentThreadContext.getCurrentOrgCd());
    }

}
